Лабораторная работа №3

Математическое моделирование

Мажитов М. А.

Российский университет дружбы народов, Москва, Россия

24 февраля 2024

Докладчик

  • Мажитов Магомед Асхабович
  • Студент группы НКНбд-01-21
  • Студ. билет 1032216461
  • Российский университет дружбы народов

Цели

Изучить модели боевых действий Ланчестера. Применить их на практике для решения задания лабораторной работы.

Вводная часть

  • В противоборстве могут принимать участие как регулярные войска, так и партизанские отряды. В общем случае главной характеристикой соперников являются численности сторон. Если в какой-то момент времени одна из численностей обращается в нуль, то данная сторона считается проигравшей (при условии, что численность другой стороны в данный момент положительна).

Вводная часть

Рассмотривается три случая ведения боевых действий:

  1. Боевые действия между регулярными войсками

  2. Боевые действия с участием регулярных войск и партизанских отрядов

  3. Боевые действия между партизанскими отрядами

Задание

Между страной Х и страной У идет война. Численность состава войск исчисляется от начала войны, и являются временными функциями x(t) и y(t). В начальный момент времени страна Х имеет армию численностью 61000 человек, а в распоряжении страны У армия численностью в 45000 человек. Для упрощения модели считаем, что коэффициенты a, b, c, h постоянны. Также считаем P(t) и Q(t) непрерывными функциями.

Задание

Постройте графики изменения численности войск армии Х и армии У для следующих случаев:

  1. Модель боевых действий между регулярными войсками:

$$ {dx\over {dt}} = -0.22x(t)-0.82y(t)+2sin(4t) $$ $$ {dy\over {dt}} = -0.45x(t)-0.67y(t)+2cos(4t) $$

  1. Модель ведение боевых действий с участием регулярных войск и партизанских отрядов:

$$ {dx\over {dt}} = -0.28x(t)-0.83y(t)+1.5sin(t) $$ $$ {dy\over {dt}} = -0.31x(t)y(t)-0.75y(t)+1.5cos(5t) $$

Задачи:

  1. Построить модель боевых действий между регулярными войсками на языках Julia и OpenModelica
  2. Построить модель ведения боевых действий с участием регулярных войск и партизанских отрядов на языках Julia и OpenModelica

Выполнение лабораторной работы

Математическая модель

Регулярная армия X против регулярной армии Y

Рассмотрим первый случай. Численность регулярных войск определяется тремя факторами:

  1. Cкорость уменьшения численности войск из-за причин, не связанных с боевыми действиями (болезни, травмы, дезертирство);
  2. Cкорость потерь, обусловленных боевыми действиями противоборствующих сторон (что связанно с качеством стратегии, уровнем вооружения, профессионализмом солдат и т.п.);
  3. Cкорость поступления подкрепления (задаётся некоторой функцией от времени).

Математическая модель

В этом случае модель боевых действий между регулярными войсками описывается следующим образом:

$$ {dx\over {dt}} = -a(t)x(t)-b(t)y(t)+P(t) $$ $$ {dy\over {dt}} = -c(t)x(t)-h(t)y(t)+Q(t) $$

Математическая модель

В первом пункте нами рассматривается как раз такая модель. Она является доработанной моделью Ланчестера, так его изначальная модель учитывала лишь члены b(t)y(t) и c(t)x(t), то есть, на потери за промежуток времени влияли лишь численность армий и “эффективность оружия” (коэффициенты b(t) и c(t)).

Математическая модель

$$ {dx\over {dt}} = -ax(t)-by(t)+P(t) $$ $$ {dy\over {dt}} = -cx(t)-hy(t)+Q(t) $$

Именно эти уравнения и будут решать наши программы для выполнения первой части задания. В конце мы получим график кривой в декартовых координатах, где по оси ox будет отображаться численность армии государства X, по оси oy будет отображаться соответствующая численность армии Y.

Математическая модель

По тому, с какой осью пересечётся график, можно определить исход войны. Если ось ox будет пересечена в положительных значениях, победа будет на стороне армии государства X (так как при таком раскладе численность армии Y достигла нуля при положительном значении численности армии X). Аналогичная ситуация для оси oy и победы армии государства Y.

Математическая модель

Регулярная армия X против партизанской армии Y

Для второй части задания, то есть, для моделирования боевых действий между регулярной армией и партизанской армией, необходимо внести поправки в предыдущую модель. Считается, что темп потерь партизан, проводящих свои операции в разных местах на некоторой известной территории, пропорционален не только численности армейских соединений, но и численности самих партизан.

Математическая модель

$$ {dx\over {dt}} = -a(t)x(t)-b(t)y(t)+P(t) $$ $$ {dy\over {dt}} = -c(t)x(t)y(t)-h(t)y(t)+Q(t) $$

Коэффициенты a, b, c и h всё так же будут положительными десятичными числами:

$$ {dx\over {dt}} = -ax(t)-by(t)+P(t) $$ $$ {dy\over {dt}} = -cx(t)y(t)-hy(t)+Q(t) $$

Решение с помощью программ

Julia

Решить дифференциальное уравнение, расписанное в постановке задачи лабораторной работы, поможет библиотека DifferentialEquations. Итоговые изображения в полярных координатах будут строиться через библиотеку Plots.

Julia

Пишем программу для решения задач.

Код программы

Результат работы программы

Результат в 1 случае

Результат работы программы

Результат во 2 случае

Анализ полученных результатов

Мною были построены графики для обоих случаев. На них получилось отрисовать модель изменения численности солдат двух войск и определить какая сторона проиграет.

Вывод

По итогам лабораторной работы я построил две модели на языке Julia, а также познакомился с уравнением Ланчестера.

Список литературы. Библиография

[1] Документация по Julia: https://docs.julialang.org/en/v1/

[2] Документация по OpenModelica: https://openmodelica.org/

[3] Решение дифференциальных уравнений: https://www.wolframalpha.com/